import moment from "moment";
// const isEn = i18n.locale === "en";
/**
 * @Title: 时间处理
 * @Description: 工具索引
 *     2、formatAddTime 时间 加法 并 格式化时间
 *     3、formatSubtractTime 时间 减法 并 格式化时间
 */

/**
 * @param time 需要格式化时间  默认当前时间
 * @param norms 格式化规则 默认 YYYY-MM-DD
 */
export const formatTime = function(time = new Date(), norms = "YYYY-MM-DD") {
  if (time == null) {
    return "";
  }
  if (time.toString().indexOf("0001") !== -1) {
    return "";
  }
  if (time != null) {
    if (time.toString().indexOf("1900") !== -1) {
      return "";
    } else {
      return (time && moment(time).format(norms)) || "";
    }
  }
};
export const formatTimeMin = function(
  time = new Date(),
  norms = "YYYY-MM-DD HH:mm:ss"
) {
  return (time && moment(time).format(norms)) || "";
};
export const formatTimeMax = function(
  time = new Date(),
  norms = "YYYY-MM-DD 23:59:59"
) {
  return (time && moment(time).format(norms)) || "";
};
// 几天后，或者几天前
export const day = function(addNum = 1, norms = "YYYY-MM-DD") {
  return moment().day(addNum).format(norms) || "";
};

// 几分钟后，或者几分钟前,设备单独用
export const getDateByName = function(
  date = new Date(),
  addNum = 1,
  name = "天",
  norms = "YYYY-MM-DD HH:mm:ss"
) {
  if (name === "年") {
    return moment(date).add(Number(addNum), "years").format(norms) || "";
  }
  if (name === "月") {
    return moment(date).add(Number(addNum), "months").format(norms) || "";
  }
  if (name === "天") {
    return moment(date).add(Number(addNum), "days").format(norms) || "";
  }
};

// 几天后，或者几天前
export const firstDay = function(norms = "YYYY-MM-DD") {
  return moment().startOf("month").format(norms) || "";
};
/**
 * @Title: 2、时间 加法 并 格式化时间
 *
 * @param time 需要格式化时间  默认当前时间
 * @param norms 格式化规则 默认 YYYY-MM-DD
 * @param addNum 加数
 * @param addNorms 加法规则 默认 'days'
 */
export const formatAddTime = function(
  time = new Date(),
  addNum = 1,
  addNorms = "days",
  norms = "YYYY-MM-DD"
) {
  return (time && moment(time).add(addNum, addNorms).format(norms)) || "";
};

/**
 * @Title: 3、时间 减法 并 格式化时间
 *
 * @param time 需要格式化时间  默认当前时间
 * @param norms 格式化规则 默认 YYYY-MM-DD
 * @param addNum 减数
 * @param addNorms 减法规则 默认 'days'
 *
 * @Description:
 */
export const formatSubtractTime = function(
  addNum = 1,
  addNorms = "days",
  time = new Date(),
  norms = "YYYY-MM-DD"
) {
  return (time && moment(time).subtract(addNum, addNorms).format(norms)) || "";
};

// 用JS将毫秒转化成天时分秒的时间格式
export const formatDuring = function(mss) {
  // var days = parseInt(mss / (1000 * 60 * 60 * 24));
  // var hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  // var minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60));
  // const day = isEn ? " days" : "天";
  // const hour = isEn ? " hours" : "小时";
  // const min = isEn ? " minutes" : "分钟";
  // return days + day + hours + hour + minutes + min;
};

/**
 * .....多久之前
 * @param {*} 之前的时间
 * @returns 系统时间到之前指定时间的距离值
 */
// 把目标日期转成多久之前通用函数
export const targetDate = (targetDate) => {
  return moment(targetDate).fromNow();
};

// formatDates
export function formatDates(date, fmt) {
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length)
    );
  }
  const o = {
    "M+": date.getMonth() + 1,
    "d+": date.getDate(),
    "H+": date.getHours(),
    "m+": date.getMinutes(),
    "s+": date.getSeconds(),
  };
  for (const k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      const str = o[k] + "";
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? str : padLeftZero(str)
      );
    }
  }
  return fmt;
}

function padLeftZero(str) {
  return ("00" + str).substr(str.length);
}
